Robotics and autonomous or semi-autonomous device control programs are unique in computing in that part of their state exists outside of the software and hardware on which they are executing. The real world or an autonomous or semi-autonomous device's environment is part of its control program's state, even if it is not directly known, and actions the control program takes can affect the environment, sometimes in non-deterministic ways. The control program must convert that external state into internal data via sensors and measurements and must be able to handle errors and uncertainties that would never arise in normal programs while still performing the desired behavior.
High level behaviors in most existing robotic and autonomous or semi-autonomous device systems are scripted or hard coded to use specific parts of this data to perform the desired tasks. However, scripts, while higher level, are still deterministic. For example, a “follow me” behavior might involve measuring the location of a user and autonomous or semi-autonomous device with GPS, computing the delta between them, and commanding the autonomous or semi-autonomous device to move by some fraction of this delta.
Some systems use hard code but with parameters that can be changed in real time to adjust to changing conditions. However, these can only be applied to parameters that can be easily derived from measurements or are amenable to computer learning techniques and must change much more slowly than the response time of the autonomous or semi-autonomous device.
A few systems allow for scripts that have emergent properties. For example, a bird-like flocking behavior can be constructed as three-part fuzzy script: “if too far from the center of the flock then move toward the center; if too far from the target then move toward the target; if too close to a neighbor then move away from the neighbor”. This can be translated to a hard-coded C program, or even as a single mathematical expression and when executed produces exactly the behavior one sees from birds flocking.
Unfortunately, all of these systems suffer from the same failing in that these systems focus on how to implement a behavior and not on describing the desired behavior. Consequently, combining different behaviors can be difficult especially if those behaviors overlap in some way and have radical unexpected consequences.